package cn.bearspark.api.controller.main;

import cn.bearspark.api.service.main.DanmuService;
import cn.bearspark.api.vo.main.danmu.ListDanmuVO;
import cn.bearspark.api.vo.main.danmu.SendDanmuVO;
import cn.bearspark.framework.web.starter.vo.ResponseVO;
import lombok.Getter;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 弹幕模块
 *
 * @author f
 */
@Validated
@RestController
@RequestMapping("/danmu")
public class DanmuController {

    private final DanmuService danmuService;

    public DanmuController(DanmuService danmuService) {
        this.danmuService = danmuService;
    }

    /**
     * 发送弹幕
     *
     * @param sendDanmuVO 发送弹幕的请求对象
     * @return 响应
     */
    @PostMapping("/send")
    public ResponseVO<Object> sendDanmu(@RequestBody SendDanmuVO sendDanmuVO) {
        danmuService.sendDanmu(sendDanmuVO);
        return ResponseVO.success();
    }

    /**
     * 获取弹幕列表
     *
     * @param videoId 待获取弹幕的视频 id
     * @return 响应，响应体：弹幕列表
     */
    @GetMapping("/list/{videoId}")
    public ResponseVO<List<ListDanmuVO>> listDanmu(@PathVariable("videoId") Long videoId) {
        return ResponseVO.success(danmuService.listDanmu(videoId));
    }

    /**
     * 弹幕模式的枚举类 TODO 独立到视频的 interface 模块中，完了之后记得把这些请求路径从白名单中移除
     */
    @Getter
    public enum DanmuModeEnum {
        /**
         * 滚动
         */
        SCROLL(0),
        /**
         * 顶部
         */
        TOP(1),
        /**
         * 底部
         */
        BOTTOM(2);

        private final int code;

        DanmuModeEnum(int code) {
            this.code = code;
        }
    }
}
